package com.boluo.customer.mapper;

import java.util.List;
import java.util.Set;

import com.boluo.customer.domain.CustomerInfo;
import com.boluo.customer.dto.CustomerInfoDTO;
import com.boluo.customer.vo.CustomerVO;
import org.apache.ibatis.annotations.Param;

/**
 * 客户基本信息Mapper接口
 *
 * @author SekonoAlpaca
 * @date 2023-05-02
 */
public interface CustomerInfoMapper {
    /**
     * 查询客户基本信息
     *
     * @param id 客户基本信息主键
     * @return 客户基本信息
     */
    public CustomerInfo selectCustomerInfoById(Long id);

    /**
     * 查询客户基本信息列表
     *
     * @param customerInfo 客户基本信息
     * @return 客户基本信息集合
     */
    public List<CustomerInfo> selectCustomerInfoList(CustomerInfo customerInfo);

    /**
     * 新增客户基本信息
     *
     * @param customerInfo 客户基本信息
     * @return 结果
     */
    public int insertCustomerInfo(CustomerInfo customerInfo);

    /**
     * 修改客户基本信息
     *
     * @param customerInfo 客户基本信息
     * @return 结果
     */
    public int updateCustomerInfo(CustomerInfo customerInfo);

    /**
     * 删除客户基本信息
     *
     * @param id 客户基本信息主键
     * @return 结果
     */
    public int deleteCustomerInfoById(Long id);

    /**
     * 批量删除客户基本信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCustomerInfoByIds(Long[] ids);

    /**
     * 查询改客户名称是否存在
     *
     * @param name 客户名称
     * @return 返回 0不存在  >0存在
     */
    int selectCustomerInfoByName(String name);

    /**
     * 通过关键字及经营状态所属地区录入时间查询
     *
     * @param customerInfo 包含搜索条件对象
     * @return 结果
     */
    List<CustomerInfo> selectCustomerInfoComplex(@Param("keyWords") CustomerVO customerInfo);

    /**
     * 查询所属客户列表(不分页)
     * @return
     */
    List<CustomerInfoDTO> listAllByIdAndName();
}
